// 封装axios
// sessinStorage中存储jwt
import axios from "axios"

// axios请求拦截器(携带jwt)
axios.interceptors.request.use(config => {
  // 如果存在jwt则携带
  let jwt = sessionStorage.getItem("jwt")
  if (jwt) {
    config.headers.Authorization = jwt
  }
  // 无论最终有无jwt，最终一定要return
  return config
})

// axios响应拦截器(存储jwt, 拆解config判断请求状态)
axios.interceptors.response.use(res => {
  // 保存请求返回的jwt
  let jwt = res.data.context ? res.data.context.jwt : null
  if (jwt) {
    sessionStorage.setItem("jwt", jwt)
  }
  // 保存acl访问控制列表
  let acl = res.data.context ? res.data.context.acl : null
  if (acl) {
    let arr = []
    sessionStorage.setItem("acl", JSON.stringify(acl))
    acl.forEach(item => {
      if (item.children.length !== 0) {
        arr.push(...item.children)
      }
    })
    sessionStorage.setItem("mbx", JSON.stringify(arr))
  }
  return res
})

// 导出axios
export default axios
